package com.liuguoqing.openingandclosing;

/**
 * 开闭原则：
 *    对扩展开放，对修改关闭。在程序需要进行拓展的时候，不能去修改原有的代码，实现一个热插拔的效果。
 * 简言之，是为了使程序的扩展性好，易于维护和升级。
 *    想要达到这样的效果，我们需要使用接口和抽象类。 因为抽象灵活性好，适应性广，只要抽象的合理，可以基本
 * 保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展，当软件需要发生变化时，只需要根据需求重新派生一个实现类来扩展就可以了。
 * @Author : liugq
 * @Date : 2022/5/12 11:38
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public class OCUi {
    public static void main(String[] args) {
        AbstractSkin skin = new DefaultSpecificSkin();
        //打印默认输出
        SouGouInput souGouInput = new SouGouInput();
        souGouInput.setSkin(skin);
        souGouInput.display();

        //调用其它
        skin = new HeimaSpecificSkin();
        souGouInput.setSkin(skin);
        souGouInput.display();

    }
}
